home *** CD-ROM | disk | FTP | other *** search
/ Sky at Night 2007 June / SAN CD 6-2007 CD-ROM 25.iso / pc / Software / AstroGrav_Win / Java / jre1.6.0 / lib / rt.jar / javax / swing / BoxLayout.class (.txt) < prev    next >
Encoding:
Java Class File  |  2006-11-29  |  4.6 KB  |  214 lines

  1. package javax.swing;
  2.  
  3. import java.awt.AWTError;
  4. import java.awt.Component;
  5. import java.awt.ComponentOrientation;
  6. import java.awt.Container;
  7. import java.awt.Dimension;
  8. import java.awt.Insets;
  9. import java.awt.LayoutManager2;
  10. import java.io.PrintStream;
  11. import java.io.Serializable;
  12.  
  13. public class BoxLayout implements LayoutManager2, Serializable {
  14.    public static final int X_AXIS = 0;
  15.    public static final int Y_AXIS = 1;
  16.    public static final int LINE_AXIS = 2;
  17.    public static final int PAGE_AXIS = 3;
  18.    private int axis;
  19.    private Container target;
  20.    private transient SizeRequirements[] xChildren;
  21.    private transient SizeRequirements[] yChildren;
  22.    private transient SizeRequirements xTotal;
  23.    private transient SizeRequirements yTotal;
  24.    private transient PrintStream dbg;
  25.  
  26.    public BoxLayout(Container var1, int var2) {
  27.       if (var2 != 0 && var2 != 1 && var2 != 2 && var2 != 3) {
  28.          throw new AWTError("Invalid axis");
  29.       } else {
  30.          this.axis = var2;
  31.          this.target = var1;
  32.       }
  33.    }
  34.  
  35.    BoxLayout(Container var1, int var2, PrintStream var3) {
  36.       this(var1, var2);
  37.       this.dbg = var3;
  38.    }
  39.  
  40.    public final Container getTarget() {
  41.       return this.target;
  42.    }
  43.  
  44.    public final int getAxis() {
  45.       return this.axis;
  46.    }
  47.  
  48.    public synchronized void invalidateLayout(Container var1) {
  49.       this.checkContainer(var1);
  50.       this.xChildren = null;
  51.       this.yChildren = null;
  52.       this.xTotal = null;
  53.       this.yTotal = null;
  54.    }
  55.  
  56.    public void addLayoutComponent(String var1, Component var2) {
  57.       this.invalidateLayout(var2.getParent());
  58.    }
  59.  
  60.    public void removeLayoutComponent(Component var1) {
  61.       this.invalidateLayout(var1.getParent());
  62.    }
  63.  
  64.    public void addLayoutComponent(Component var1, Object var2) {
  65.       this.invalidateLayout(var1.getParent());
  66.    }
  67.  
  68.    public Dimension preferredLayoutSize(Container var1) {
  69.       Dimension var2;
  70.       synchronized(this) {
  71.          this.checkContainer(var1);
  72.          this.checkRequests();
  73.          var2 = new Dimension(this.xTotal.preferred, this.yTotal.preferred);
  74.       }
  75.  
  76.       Insets var3 = var1.getInsets();
  77.       var2.width = (int)Math.min((long)var2.width + (long)var3.left + (long)var3.right, 2147483647L);
  78.       var2.height = (int)Math.min((long)var2.height + (long)var3.top + (long)var3.bottom, 2147483647L);
  79.       return var2;
  80.    }
  81.  
  82.    public Dimension minimumLayoutSize(Container var1) {
  83.       Dimension var2;
  84.       synchronized(this) {
  85.          this.checkContainer(var1);
  86.          this.checkRequests();
  87.          var2 = new Dimension(this.xTotal.minimum, this.yTotal.minimum);
  88.       }
  89.  
  90.       Insets var3 = var1.getInsets();
  91.       var2.width = (int)Math.min((long)var2.width + (long)var3.left + (long)var3.right, 2147483647L);
  92.       var2.height = (int)Math.min((long)var2.height + (long)var3.top + (long)var3.bottom, 2147483647L);
  93.       return var2;
  94.    }
  95.  
  96.    public Dimension maximumLayoutSize(Container var1) {
  97.       Dimension var2;
  98.       synchronized(this) {
  99.          this.checkContainer(var1);
  100.          this.checkRequests();
  101.          var2 = new Dimension(this.xTotal.maximum, this.yTotal.maximum);
  102.       }
  103.  
  104.       Insets var3 = var1.getInsets();
  105.       var2.width = (int)Math.min((long)var2.width + (long)var3.left + (long)var3.right, 2147483647L);
  106.       var2.height = (int)Math.min((long)var2.height + (long)var3.top + (long)var3.bottom, 2147483647L);
  107.       return var2;
  108.    }
  109.  
  110.    public synchronized float getLayoutAlignmentX(Container var1) {
  111.       this.checkContainer(var1);
  112.       this.checkRequests();
  113.       return this.xTotal.alignment;
  114.    }
  115.  
  116.    public synchronized float getLayoutAlignmentY(Container var1) {
  117.       this.checkContainer(var1);
  118.       this.checkRequests();
  119.       return this.yTotal.alignment;
  120.    }
  121.  
  122.    public void layoutContainer(Container var1) {
  123.       this.checkContainer(var1);
  124.       int var2 = var1.getComponentCount();
  125.       int[] var3 = new int[var2];
  126.       int[] var4 = new int[var2];
  127.       int[] var5 = new int[var2];
  128.       int[] var6 = new int[var2];
  129.       Dimension var7 = var1.getSize();
  130.       Insets var8 = var1.getInsets();
  131.       var7.width -= var8.left + var8.right;
  132.       var7.height -= var8.top + var8.bottom;
  133.       ComponentOrientation var9 = var1.getComponentOrientation();
  134.       int var10 = this.resolveAxis(this.axis, var9);
  135.       boolean var11 = var10 != this.axis ? var9.isLeftToRight() : true;
  136.       synchronized(this) {
  137.          this.checkRequests();
  138.          if (var10 == 0) {
  139.             SizeRequirements.calculateTiledPositions(var7.width, this.xTotal, this.xChildren, var3, var4, var11);
  140.             SizeRequirements.calculateAlignedPositions(var7.height, this.yTotal, this.yChildren, var5, var6);
  141.          } else {
  142.             SizeRequirements.calculateAlignedPositions(var7.width, this.xTotal, this.xChildren, var3, var4, var11);
  143.             SizeRequirements.calculateTiledPositions(var7.height, this.yTotal, this.yChildren, var5, var6);
  144.          }
  145.       }
  146.  
  147.       for(int var12 = 0; var12 < var2; ++var12) {
  148.          Component var13 = var1.getComponent(var12);
  149.          var13.setBounds((int)Math.min((long)var8.left + (long)var3[var12], 2147483647L), (int)Math.min((long)var8.top + (long)var5[var12], 2147483647L), var4[var12], var6[var12]);
  150.       }
  151.  
  152.       if (this.dbg != null) {
  153.          for(int var15 = 0; var15 < var2; ++var15) {
  154.             Component var16 = var1.getComponent(var15);
  155.             this.dbg.println(var16.toString());
  156.             this.dbg.println("X: " + this.xChildren[var15]);
  157.             this.dbg.println("Y: " + this.yChildren[var15]);
  158.          }
  159.       }
  160.  
  161.    }
  162.  
  163.    void checkContainer(Container var1) {
  164.       if (this.target != var1) {
  165.          throw new AWTError("BoxLayout can't be shared");
  166.       }
  167.    }
  168.  
  169.    void checkRequests() {
  170.       if (this.xChildren == null || this.yChildren == null) {
  171.          int var1 = this.target.getComponentCount();
  172.          this.xChildren = new SizeRequirements[var1];
  173.          this.yChildren = new SizeRequirements[var1];
  174.  
  175.          for(int var2 = 0; var2 < var1; ++var2) {
  176.             Component var3 = this.target.getComponent(var2);
  177.             if (!var3.isVisible()) {
  178.                this.xChildren[var2] = new SizeRequirements(0, 0, 0, var3.getAlignmentX());
  179.                this.yChildren[var2] = new SizeRequirements(0, 0, 0, var3.getAlignmentY());
  180.             } else {
  181.                Dimension var4 = var3.getMinimumSize();
  182.                Dimension var5 = var3.getPreferredSize();
  183.                Dimension var6 = var3.getMaximumSize();
  184.                this.xChildren[var2] = new SizeRequirements(var4.width, var5.width, var6.width, var3.getAlignmentX());
  185.                this.yChildren[var2] = new SizeRequirements(var4.height, var5.height, var6.height, var3.getAlignmentY());
  186.             }
  187.          }
  188.  
  189.          int var7 = this.resolveAxis(this.axis, this.target.getComponentOrientation());
  190.          if (var7 == 0) {
  191.             this.xTotal = SizeRequirements.getTiledSizeRequirements(this.xChildren);
  192.             this.yTotal = SizeRequirements.getAlignedSizeRequirements(this.yChildren);
  193.          } else {
  194.             this.xTotal = SizeRequirements.getAlignedSizeRequirements(this.xChildren);
  195.             this.yTotal = SizeRequirements.getTiledSizeRequirements(this.yChildren);
  196.          }
  197.       }
  198.  
  199.    }
  200.  
  201.    private int resolveAxis(int var1, ComponentOrientation var2) {
  202.       int var3;
  203.       if (var1 == 2) {
  204.          var3 = var2.isHorizontal() ? 0 : 1;
  205.       } else if (var1 == 3) {
  206.          var3 = var2.isHorizontal() ? 1 : 0;
  207.       } else {
  208.          var3 = var1;
  209.       }
  210.  
  211.       return var3;
  212.    }
  213. }
  214.